package org.aeon.gamechatnest.service;

import org.aeon.gamechatnest.common.enumeration.DefaultRoleEnum;
import org.aeon.gamechatnest.pojo.Role;
import org.aeon.gamechatnest.pojo.UserServer;

import java.util.List;

/**
 * @author : Liys 2024年5月9日
 */
public interface UserServerService {
    /**
     * 新增用户服务器
     *
     * @param userServer
     * @return
     */
    boolean save(UserServer userServer);

    /**
     * 创建默认角色
     * 添加默认权限
     *
     * @param userServer
     * @param defaultRole
     * @return
     */
    Role createDefaultRole(UserServer userServer, DefaultRoleEnum defaultRole);

    /**
     * 通过服务器id删除服务器
     *
     * @param serverId
     * @return
     */
    boolean removeById(Long serverId);

    /**
     * 更新用户服务器
     *
     * @param userServer 更新实体
     * @return true: 更新成功
     */
    boolean modifyById(UserServer userServer);

    /**
     * 模糊查询服务器
     *
     * @param name 服务器名
     * @return 用户服务器列表
     */
    List<UserServer> findByName(String name);

    /**
     * 查询服务器
     *
     * @param serverId 服务器id
     * @return 用户服务器
     */
    UserServer findById(Long serverId);

    /**
     * 查询当前用户加入的服务器
     *
     * @param userId 用户id
     * @return 用户服务器
     */
    List<UserServer> findByUserId(Long userId);

    /**
     * 判断存在
     *
     * @param serverId 服务器id
     * @return true: 存在
     */
    boolean isExist(Long serverId);

    /**
     * 判断不存在
     *
     * @param serverId 服务器id
     * @return true: 不存在
     */
    boolean isNotExist(Long serverId);

    /**
     * 设置用户当前服务器（进入服务器）
     *
     * @param serverId
     * @return
     */
    boolean useServer(Long serverId);
}
